#pragma once


#include <map>
#include <string>
#include <vector>
#include "glmath.h"

using namespace glmath;
using namespace std;


class CParamHandler
{

private:
	map<string,bool> m_parameters;
	map<string,string> m_values;

	float* GetFloatPtr(const string &s);
	Vector3 GetVector(const string &s);
	float GetFloat(const string &s);
	int GetInt(const string &s);
	vector<float*> GetTwoFloatArrays(const string &s);
	char** GetCharPtrPtr(const string &s, int &no);
	vector<float> GetFloatVector(const string &s);

public:
	CParamHandler(void);
	~CParamHandler(void);

	void AddToValue(const string &param,const string &valueToAdd);
	void SetAllFalse();
	void Reset();
	int GetSegments();
	
	vector<float> GetHunger();
	vector<float> GetLifeSpan();
	vector<float> GetSpeed();
	vector<float> GetStamina();
	vector<float> GetLengths();
	vector<float*> GetWidths();
	vector<float*> GetHeights();
	int GetAge();
	
	float GetReproductionRate();
	float GetKeepaway();
	float GetSeparation();
	float GetAgility();
	float GetSmellRadius();
	float GetHearRadius();
	float GetSeeRadius();
	float GetFeedingDistance();
	float GetNutritionalValue();
	
	float GetDigestionRate();
	int	GetAlive();
	int GetTailType();
	char **GetMusclesUsage(int &no);
	Vector3 GetPartsInfo();
	Vector3 GetConnectionsInfo();
	float GetWaterPressure();
	Vector3 GetStabilizer();
	int GetAcrobatics();
	Vector3 GetPosition();
	Vector3 GetScale();
	float GetLoses();
	float GetTextureExtra();
	string GetTexturePath();
	string GetType();
	Vector3 GetTextureScale();
	Vector3 GetTextureMove();
	string GetModelFile();	
	string GetGender();
	Vector3 GetRotation();//NEW
	int GetRootIndex();
	float* GetLengthsP();
	vector<float> GetWayPoints(const string &which);
	vector<float> GetTimes(const string &which);
	vector<float> GetExtra(const string &which);
	void *GetValueOf(const string &which);
	bool IsTrue(const string &param);
	void SetTrue(const string &param);
	bool HasValue(const string &param);
	void Parse(const string &toParse);
};
